﻿using Abp.Runtime.Validation;
using NetCore.Enums;
using NetCore.Extensions;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace NetCore.LocationAreas.Dtos
{
    /// <summary>
    /// 输入类
    /// </summary>
    public class LocationAreaInput : ICustomValidate
    {
        #region 基础信息字段

        /// <summary>
        /// 父级区域代码
        /// </summary>
        [Description("父级区域代码")]
        public string ParentCode { get; set; }

        ///// <summary>
        /// 父级区域Id，只需要传递这个参数即可
        /// </summary>
        [Description("父级区域")]
        public long? ParentId { get; set; }
        /// <summary>
        /// 区域深度 深度级别 0:中国；1:省分；2:市；3:区/县
        /// </summary>
        [Description("区域深度")]
        public DeepLevelType? Level { get; set; }

        ///// <summary>
        ///// 父级区域
        ///// </summary>
        //[Description("父级区域")]
        //public string ParentName { get; set; }

        ///// <summary>
        ///// 区域类型 深度级别
        ///// </summary>
        //[Description("区域类型")]
        //public DeepLevelType? DeepLevel { get; set; }
        ///// <summary>
        ///// 区域名称
        ///// </summary>
        //[Description("区域名称")]
        //public string Name { get; set; }
        ///// <summary>
        ///// 拼音
        ///// </summary>
        //[Description("拼音")]
        //public string Pinyin { get; set; }
        #endregion

        public void AddValidationErrors(CustomValidationContext context)
        {
            if (!(ParentId.HasValue || Level.HasValue || ParentCode.HasValue()))
            {
                //三个必填其一,只需要填一个就够了
                context.Results.Add(new ValidationResult("父级区域代码,父级区域Id或区域深度 至少输入其中一项!"));
            }
        }
    }
}
